package com.example.js_interaction.netweb;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

/**
 * 复写继承类
 * extends 代表了继承
 * PagerAdapter 所继承的累
 */
public class DisplayAdapter extends PagerAdapter {
    //view的集合对象
    List<ImageView>list;

    /**
     * 初始化类
     * @param list
     */
    public DisplayAdapter(List<ImageView> list) {
        //把参数变量赋值给类变量
        this.list = list;
    }

    /**
     * 返回可用的视图数
     * @return
     */
    @Override
    public int getCount() {
        //返回集合的元素数
        return list.size();
    }

    /**
     * 确定页面视图是否与instantiateItem（ViewGroup，int）返回的特定键对象相关联。此方法是PagerAdapter正常工作所必需的。
     * @param view 用于检查与对象对象关联的页面视图
     * @param object 要检查与视图关联的对象
     * @return
     */
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

    /**
     * 为给定位置创建页面。适配器负责将视图添加到此处给定的容器中，尽管它只需要确保在从finishUpdate（ViewGroup）返回时完成。
     * @param container 将在其中显示页面的包含视图。
     * @param position 要实例化的页面位置。
     * @return 返回表示新页面的对象。这不需要是视图，但可以是页面的其他容器。
     */
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        /**
         * 添加子视图。如果尚未在子级上设置布局参数，则会在子级设置此ViewGroup的默认参数。
         * 注意：不要从draw（Canvas）、onDraw（画布）、dispatchDraw（Canvas）或任何相关方法调用此方法。
         * 参数: 要添加的子视图
         */
        container.addView(list.get(position));
        return list.get(position);
    }

    /**
     * 删除给定位置的页面。适配器负责从其容器中删除视图，尽管它只需要确保在从finishUpdate（ViewGroup）返回时完成。
     * @param container 将从中删除页面的包含视图。
     * @param position 要删除的页面位置。
     * @param object 返回的同一对象。 {@link #instantiateItem(View, int)}.
     */
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(list.get(position));
    }
}
